<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Zend_Config_Writer - Zend Framework Manual</title>

    <link href="../css/shCore.css" rel="stylesheet" type="text/css" />
    <link href="../css/shThemeDefault.css" rel="stylesheet" type="text/css" />
    <link href="../css/styles.css" media="all" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Zend Framework</h1>
<h2>Programmer's Reference Guide</h2>
<ul>
    <li><a href="../en/zend.config.writer.introduction.html">Inglês (English)</a></li>
    <li><a href="../pt-br/zend.config.writer.introduction.html">Português Brasileiro (Brazilian Portuguese)</a></li>
</ul>
<table width="100%">
    <tr valign="top">
        <td width="85%">
            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="zend.config.writer.html">Zend_Config_Writer</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="zend.config.writer.html">Zend_Config_Writer</a></span><br />
                        <span class="home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="zend.console.getopt.html">Zend_Console_Getopt</a></div>
                    </td>
                </tr>
            </table>
<hr />
<div id="zend.config.writer.introduction" class="section"><div class="info"><h1 class="title">Zend_Config_Writer</h1></div>
    

    <p class="para">
        <span class="classname">Zend_Config_Writer</span> lhe dá a capacidade de escrever arquivos de
        configuração a partir de objetos <span class="classname">Zend_Config</span>. Ele funciona com
        adaptadores separados do sistema e muito fáceis de usar. Por padrão, o
        <span class="classname">Zend_Config_Writer</span> vêm embarcado com quatro adaptadores, que são
        todos baseados em arquivos. Você instanciará um escritor com opções específicas, que podem
        ser <em class="emphasis">filename</em> e <em class="emphasis">config</em>. Em seguida, você irá chamar
        o método  <span class="methodname">write()</span> do escritor e o arquivo de configuração será
        criado. Você também pode fornecer <var class="varname">$filename</var> e <var class="varname">$config</var>
        diretamente ao método  <span class="methodname">write()</span>. Atualmente os escritores que se
        seguem são fornecidos com <span class="classname">Zend_Config_Writer</span>:
    </p>

    <ul class="itemizedlist">
        <li class="listitem">
            <p class="para">
                <span class="classname">Zend_Config_Writer_Array</span>
            </p>
        </li>

        <li class="listitem">
            <p class="para">
                <span class="classname">Zend_Config_Writer_Ini</span>
            </p>
        </li>

        <li class="listitem">
            <p class="para">
                <span class="classname">Zend_Config_Writer_Json</span>
            </p>
        </li>

        <li class="listitem">
            <p class="para">
                <span class="classname">Zend_Config_Writer_Xml</span>
            </p>
        </li>

        <li class="listitem">
            <p class="para">
                <span class="classname">Zend_Config_Writer_Yaml</span>
            </p>
        </li>
    </ul>

    <p class="para">
        Ao modificar ou criar um objeto <span class="classname">Zend_Config</span>, há algumas coisas que se
        deve conhecer. Para criar ou modificar um valor, basta definir o parâmetro do objeto
        <span class="classname">Zend_Config</span> através do assessor de parâmetro
        (<em class="emphasis">-&gt;</em>). Para criar uma seção na raiz ou para criar um ramo, você
        apenas irá criar uma nova matriz (&quot;<strong class="command">$config-&gt;branch = array();</strong>&quot;). Para
        definir qual seção estende outra, você chamará o método  <span class="methodname">setExtend()</span>
        na raiz do objeto <span class="classname">Zend_Config</span>.
    </p>

    <div class="example" id="zend.config.writer.example.using"><div class="info"><p><b>Example #1 Usando o Zend_Config_Writer</b></p></div>
        

        <div class="example-contents"><p>
            Este exemplo ilustra a utilização básica de
            <span class="classname">Zend_Config_Writer_Xml</span>
            para criar um novo arquivo de configuração:
        </p></div>

        <pre class="programlisting brush: php">
// Cria o objeto de configuração
$config = new Zend_Config(array(), true);
$config-&gt;production = array();
$config-&gt;staging    = array();

$config-&gt;setExtend(&#039;staging&#039;, &#039;production&#039;);

$config-&gt;production-&gt;db = array();
$config-&gt;production-&gt;db-&gt;hostname = &#039;localhost&#039;;
$config-&gt;production-&gt;db-&gt;username = &#039;production&#039;;

$config-&gt;staging-&gt;db = array();
$config-&gt;staging-&gt;db-&gt;username = &#039;staging&#039;;

// Escreve o arquivo de configuração em uma das seguintes formas:
// a)
$writer = new Zend_Config_Writer_Xml(array(&#039;config&#039;   =&gt; $config,
                                           &#039;filename&#039; =&gt; &#039;config.xml&#039;));
$writer-&gt;write();

// b)
$writer = new Zend_Config_Writer_Xml();
$writer-&gt;setConfig($config)
       -&gt;setFilename(&#039;config.xml&#039;)
       -&gt;write();

// c)
$writer = new Zend_Config_Writer_Xml();
$writer-&gt;write(&#039;config.xml&#039;, $config);
</pre>


        <div class="example-contents"><p>
            Isso criará um arquivo de configuração <acronym class="acronym">XML</acronym> com as seções de produção
            e de testes, onde testes estende produção.
        </p></div>
    </div>

    <div class="example" id="zend.config.writer.modifying"><div class="info"><p><b>Example #2 Modificando uma Configuração Existente</b></p></div>
        

        <div class="example-contents"><p>
            Este exemplo demonstra como editar um arquivo de configuração existente.
        </p></div>

        <pre class="programlisting brush: php">
// Carrega todas as seções de um arquivo de configuração
// existente, enquanto pula o que é estendido.
$config = new Zend_Config_Ini(&#039;config.ini&#039;,
                              null,
                              array(&#039;skipExtends&#039;        =&gt; true,
                                    &#039;allowModifications&#039; =&gt; true));

// Modifica um valor
$config-&gt;production-&gt;hostname = &#039;foobar&#039;;

// Escreve o arquivo de configuração
$writer = new Zend_Config_Writer_Ini(array(&#039;config&#039;   =&gt; $config,
                                           &#039;filename&#039; =&gt; &#039;config.ini&#039;));
$writer-&gt;write();
</pre>

    </div>

    <blockquote class="note"><p><b class="note">Note</b>: <span class="info"><b>Carregando um Arquivo de Configuração</b><br /></span>
        

        <p class="para">
            Ao carregar um arquivo de configuração existente para modificações, é muito importante
            que se carregue todas as seções e que se pule tudo o que é estendido, para que valores
            não sejam fundidos. Isto é feito passando o <em class="emphasis">skipExtends</em> como opção
            para o construtor.
        </p>
    </p></blockquote>

    <p class="para">
        Para todos os escritores baseados em arquivo (<acronym class="acronym">INI</acronym>,
        <acronym class="acronym">JSON</acronym>, <acronym class="acronym">XML</acronym>, <acronym class="acronym">YAML</acronym> e Matriz
        <acronym class="acronym">PHP</acronym>) internamente o  <span class="methodname">render()</span> é usado para
        construir a string de configuração. Este método pode ser usado de forma independente para
        acessar a string de representação dos dados de configuração.
    </p>

    <div class="section" id="zend.config.writer.introduction.ini-notes"><div class="info"><h1 class="title">Notes specific to the INI writer</h1></div>
        

        <ul class="itemizedlist">
            <li class="listitem">
                <p class="para">
                    The <acronym class="acronym">INI</acronym> writer has two modes for rendering with regard to
                    sections.  By default the top-level configuration is always written into section
                    names.  By calling <strong class="command">$writer-&gt;setRenderWithoutSections();</strong> all
                    options are written into the global namespace of the <acronym class="acronym">INI</acronym> file
                    and no sections are applied.
                </p>
            </li>

            <li class="listitem">
                <p class="para">
                    <span class="classname">Zend_Config_Writer_Ini</span> has an additional option parameter
                    <em class="emphasis">nestSeparator</em>, which defines with which character the
                    single nodes are separated. The default is a single dot, which is accepted by
                    <span class="classname">Zend_Config_Ini</span> by default.
                </p>
            </li>
        </ul>
    </div>

    <div class="section" id="zend.config.writer.introduction.yaml-notes"><div class="info"><h1 class="title">Notes specific to the YAML writer</h1></div>
        

        <p class="para">
            The <acronym class="acronym">YAML</acronym> writer lets you optionally specify an alternate
            <acronym class="acronym">YAML</acronym> encoder to use. By default, one is shipped with the framework
            that is suitable for most configuration tasks. If you find it insufficient, or wish to
            use more advanced YAML, you may provide an alternate encoder callback.
        </p>

        <p class="para">
            The method for doing so is to use the
             <span class="methodname">Zend_Config_Writer_Yaml::setYamlEncoder()</span> method, passing it a
            valid callback.
        </p>

        <pre class="programlisting brush: php">
// Use the Symfony Yaml Component:
$writer = new Zend_Config_Writer_Yaml($filename);
$writer-&gt;setYamlEncoder(array(&#039;sfYaml&#039;, &#039;dump&#039;));
</pre>


        <p class="para">
            The above uses the Symfony Components&#039; <span class="classname">sfYaml</span> component in order
            to encode the configuration to <acronym class="acronym">YAML</acronym>.
        </p>
    </div>
</div>
        <hr />

            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="zend.config.writer.html">Zend_Config_Writer</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="zend.config.writer.html">Zend_Config_Writer</a></span><br />
                        <span class="home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="zend.console.getopt.html">Zend_Console_Getopt</a></div>
                    </td>
                </tr>
            </table>
</td>
        <td style="font-size: smaller;" width="15%"> <style type="text/css">
#leftbar {
	float: left;
	width: 186px;
	padding: 5px;
	font-size: smaller;
}
ul.toc {
	margin: 0px 5px 5px 5px;
	padding: 0px;
}
ul.toc li {
	font-size: 85%;
	margin: 1px 0 1px 1px;
	padding: 1px 0 1px 11px;
	list-style-type: none;
	background-repeat: no-repeat;
	background-position: center left;
}
ul.toc li.header {
	font-size: 115%;
	padding: 5px 0px 5px 11px;
	border-bottom: 1px solid #cccccc;
	margin-bottom: 5px;
}
ul.toc li.active {
	font-weight: bold;
}
ul.toc li a {
	text-decoration: none;
}
ul.toc li a:hover {
	text-decoration: underline;
}
</style>
 <ul class="toc">
  <li class="header home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></li>
  <li class="header up"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></li>
  <li class="header up"><a href="reference.html">Refer&ecirc;ncia do Zend Framework</a></li>
  <li class="header up"><a href="zend.config.writer.html">Zend_Config_Writer</a></li>
  <li class="active"><a href="zend.config.writer.introduction.html">Zend_Config_Writer</a></li>
 </ul>
 </td>
    </tr>
</table>

<script type="text/javascript" src="../js/shCore.js"></script>
<script type="text/javascript" src="../js/shAutoloader.js"></script>
<script type="text/javascript" src="../js/main.js"></script>

</body>
</html>